/**
 * @author Laboratio Av I
 * @since 18/04/2012 14:03:56
 */
package ar.edu.utn.frgp.banco.service.impl;



import java.util.ArrayList;
import java.util.List;

import ar.edu.utn.frgp.banco.dao.ServicioDao;

import ar.edu.utn.frgp.banco.dao.impl.ServicioDaoImpl;


import ar.edu.utn.frgp.banco.domain.Servicios;

import ar.edu.utn.frgp.banco.exceptions.DataAccessException;
import ar.edu.utn.frgp.banco.exceptions.ServiceException;

import ar.edu.utn.frgp.banco.service.RecursoServiceServicios;

public class RecursoServiceServiciosImpl implements RecursoServiceServicios {
	
	private ServicioDao servicioDao;
	
	public RecursoServiceServiciosImpl() { 
		setServicioDao(new ServicioDaoImpl());
		
	}
	
	public ServicioDao getServicioDao() {
		return servicioDao;
	}


	public void setServicioDao(ServicioDao servicioDao) {
		this.servicioDao = servicioDao;
	}
	
	
	private boolean existeServicio(Servicios servicio) {
		try {
			Servicios se = new Servicios(); 
			
			se = servicioDao.obtenerServicio(servicio.getIdservicio());
			
			if (se == null)
			{return true;}
			else
			{return false;}			
		} catch (DataAccessException e) {
			return false;
		}		
	}
	
	
	public void crearServicio(Servicios servicio) throws ServiceException {
		
		if (servicio != null) {			
			if (existeServicio(servicio)) {
				try {
					servicioDao.altaServicio(servicio);
				} catch (DataAccessException e) {
					throw new ServiceException("Error de acceso a BD."
							+ e.getMessage());
				}
			} else {
				throw new ServiceException("El servicio ya existe");
			}		                                 
		} else {
			throw new ServiceException("El objeto servicio es null");
		}
	}
	
	public List<Servicios> listarServicios() throws ServiceException {
		List<Servicios> servicios = new ArrayList<Servicios>();
		try {
			
			servicios = servicioDao.traerTodo();
			
			
		} catch (DataAccessException e) {
			throw new ServiceException("Error de acceso a BD." + e.getMessage());
			}
		return servicios;
	}

	@Override
	public Servicios buscarServicio(int codigoServicio)throws ServiceException {
		
		Servicios se = new Servicios();
		
		try {
			se = servicioDao.obtenerUnServicio(codigoServicio);
		} catch (DataAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
		return se;
	
	}

}